/**
    File: lab1.h - header file for CSE 4252 Lab #1
    Author: Gerrit Kitts (kitts.17@osu.edu)
    Desc: This class creates a simple conversion utility that will translate 
      date strings in mm/dd/yy format into mm/dd/yyyy format.  Year values
      greater than or equal to 50 are interpreted as being dates in the 
      1900s, while date values less than 50 are interpreted as dates 
      in the 2000s.  The utility performs basic out of bound validations - 
      including leap-year calculations.  
      
      In the case of invalid data, the reason for the error is printed on 
      stdout.
      
      Usage: lab1
*/

#ifndef __LAB1_INCLUDE
#define __LAB1_INCLUDE

#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>

using namespace std;

/** Determines if the provided 2-digit year (between 1950 and 2049) would be 
    a leap year.
    Inputs: A 2-digit year between 1950 and 2049 as an integer
    Output: true if the year was a leap year, false otherwise
*/
bool isLeapYear(int);

/** Determines if the year input is a valid year.  Currently assumes all 
    values are correct as the validation logic elsewhere ensures that there
    should be two chars present in the yy field.
    Inputs: A string representing a date in the mm/dd/yy format
    Output: The year as a four-digit int value, -1 if the year was invalid.
*/
int validateYear(string);

/** Determines if the month input is between 1 and 12, the valid months
    for a gregorian calendar.
    Inputs: A string representing a date in the mm/dd/yy format
    Output: The month as an int value, -1 if the month was invalid.
*/
int validateMonth(string);

/** Determines if the date input is valid.  The date must be between
    1 and 28-31 (depending on the month and year).  
    Inputs: A string representing a date in the mm/dd/yy format
    Output: The date as an int, -1 if the date was invalid.
*/
int validateDate(string, int, int);

/** Takes an input date and attempts to convert it from mm/dd/yy format
    to mm/dd/yyyy format.  The input date is validated for formatting
    before conversion is attempted.
    Inputs: A string representing a date, ideally in the mm/dd/yy format
    Output: True if the date was able to be converted, false otherwise
*/
bool convertDate(string);

/** Main entry point of the program.
    Inputs: None
    Output: None
*/
int main();

#endif